﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Aeroporto.controle;
using System.Collections;
using Aeroporto.modelo;
using Npgsql;
using Aeroporto.bd;

namespace Aeroporto.visão
{
    public partial class formInstanciar : Form
    {        
        private VooControl voo_control = new VooControl();
        private AeronaveControl aeronave_control = new AeronaveControl();
        
        public formInstanciar(string companhia, string num_voo, string id_trecho, string horario, bool seg, bool ter, bool qua, bool qui, 
            bool sex, bool sab, bool dom, string origem, string destino)
        {
            InitializeComponent();
            la_comp.Text = companhia;
            la_trecho.Text = id_trecho;
            la_voo.Text = num_voo;
            checkBox1.Checked = seg;
            checkBox2.Checked = ter;
            checkBox3.Checked = qua;
            checkBox4.Checked = qui;
            checkBox5.Checked = sex;
            checkBox6.Checked = sab;
            checkBox7.Checked = dom;            
            lista_dados(companhia, num_voo, id_trecho);
        }

        private void formInstanciar_Load(object sender, EventArgs e)
        {
            //lista_dados();
        }

        private void lista_dados(string companhia, string num_voo, string id_trecho)
        {
            try
            {
                grid_voos.DataSource = voo_control.pesquisar(companhia, num_voo, id_trecho);
                grid_voos.Columns["data_viagem"].HeaderText = "Data";                                

                grid_aeronaves.DataSource = aeronave_control.lista_dados("aeronave");                                

                //int w = Screen.PrimaryScreen.Bounds.Width;
                //int h = Screen.PrimaryScreen.Bounds.Height;
                //MessageBox.Show("Minha tela é w: "+w+" por h: "+h,"");
            }
            catch (Exception erro)
            {
                MessageBox.Show("Erro na listagem do Grid: " + erro);
            }
        }

        private void label6_Click(object sender, EventArgs e)
        {

        }

        private void label8_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (ma_data.Text != "" && te_aeronave.Text != "")
            {
                try
                {
                    string res = voo_control.add_instancia(ma_data.Text, la_trecho.Text);
                    string res2 = voo_control.disponibilizar(ma_data.Text, la_trecho.Text, te_aeronave.Text);                                                                                    
                    //grid_voos.Columns["data_viagem"].HeaderText = "Data";                
                    //grid_voos.ReadOnly = true;
                    MessageBox.Show("Data de Viagem cadastrada, já podem serem feitas reservas para a aeronave " + te_aeronave.Text + " no dia " + ma_data.Text);
                    ma_data.Text = "";
                    te_aeronave.Text = "";
                    lista_dados(la_comp.Text, la_voo.Text, la_trecho.Text);

                }
                catch (NpgsqlException erro)
                {
                    Arquivo.escrever(erro.ToString());
                    MessageBox.Show("O DIA DA SEMANA É INVÁLIDO. VERIFIQUE SE A DATA É UMA DATA ANTERIOR A DE HOJE OU SE O NÃO OCORREM VOOS NESTE DIA DA SEMANA");
                }
            }            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            ArrayList datas_viagens = new ArrayList();                        
            
            foreach (DataGridViewRow r in grid_voos.SelectedRows)
            {
                datas_viagens.Add(r.Cells[0].Value.ToString());                
            }

            if (MessageBox.Show("Tem certeza que deseja excluir " + datas_viagens.Count + " data (s)", "Data Viagem", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                MyMessageBox message_box = voo_control.exclui_voo(datas_viagens, la_trecho.Text);                
                if(message_box.String1 == "Erro ao remover"){
                    message_box.String1 += " Verifique se já existe(m) reserva(s) de passagens realizadas ou disponíveis para essa data.";
                }
                MessageBox.Show(message_box.String1, message_box.String2);
                lista_dados(la_comp.Text, la_voo.Text, la_trecho.Text);
            }         
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void label14_Click(object sender, EventArgs e)
        {

        }

        private void grid_voos_DoubleClick(object sender, EventArgs e)
        {

        }

        private void grid_voos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int linha = grid_voos.CurrentRow.Index;            
            ma_data.Text = grid_voos[0, linha].Value.ToString();
        }

        private void grid_aeronaves_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int linha = grid_aeronaves.CurrentRow.Index;
            te_aeronave.Text = grid_aeronaves[0, linha].Value.ToString();
        }
    }
}
